// const minimist = require("minimist");

// console.log(minimist(process.argv));
// const { database, user, password } = minimist(process.argv);

// 生成数据库连接文件

// const { Sequelize } = require("sequelize");
// let sequelize = new Sequelize({ ...config });

// const argvs = Qs.parse(process.argv.slice(2).join("&"));
// const runEnv = argvs.mode || "dev";
// const configFile = {
//   dev: "./config/config.local.js",
//   prod: "./config/config.prod.js",
// };
// const options = require(configFile[runEnv])({
//   name: runEnv,
// });

// function logger(msg, color) {
//   const colorMap = {
//     red: "\x1B[31m%s\x1B[0m",
//     green: "\x1B[32m%s\x1B[0m",
//   };
//   const c = color ? colorMap[color] : colorMap.green;

//   console.log(c, msg);
// }
// // import config from './config/config.default';
// // console.log(options.sequelize);

// const CryptoJS = require("crypto-js");
// const moment = require("moment");

// function initPassword(key, iv) {
//   const ciphertext = CryptoJS.AES.encrypt(
//     "123456",
//     CryptoJS.enc.Utf8.parse(key),
//     {
//       iv: CryptoJS.enc.Utf8.parse(iv),
//       mode: CryptoJS.mode.CBC,
//       padding: CryptoJS.pad.Pkcs7,
//     }
//   );
//   return ciphertext.toString();
// }
// const config = options.sequelize;
// const { Sequelize } = require("sequelize");
// let sequelize = new Sequelize({ ...config });

// init();

// async function init() {
//   let errno = 1;
//   try {
//     await sequelize.authenticate();
//     logger(
//       "数据库已存在，如果您想重新构建数据库，请删除原有数据库后再次执行本文件",
//       "red"
//     );
//     process.exit();
//   } catch (error) {
//     errno = error.original.errno;
//   }
//   //   console.log(errno);
//   if (errno !== 1049) {
//     logger("数据库连接失败，请检查数据库配置信息[config/config.prod.js]");
//     process.exit();
//   }
//   // 数据库不存在,可以创建新的数据库
//   logger(`即将初始化数据库 ${config.database}`);
//   const { INTEGER, DATE, STRING, TEXT } = Sequelize;
//   try {
//     sequelize = new Sequelize({ ...config, database: "" });
//     let queryInterface = sequelize.getQueryInterface();

//     await queryInterface.createDatabase(config.database, {
//       charset: "utf8mb4",
//       collate: "utf8mb4_general_ci",
//     });
//     logger(`初始化数据库 ${config.database} 创建成功`);
//     // logger( 'new config', config);
//     sequelize = new Sequelize(config);
//     queryInterface = sequelize.getQueryInterface();
//     await queryInterface.createTable("users", {
//       id: { type: INTEGER, primaryKey: true, autoIncrement: true },
//       username: STRING(30),
//       password: STRING(256),
//       token: STRING(256),
//       active: { type: INTEGER },
//       created_at: { type: DATE, defaultValue: Sequelize.NOW },
//       updated_at: { type: DATE, defaultValue: Sequelize.NOW },
//     });
//     logger("users表创建成功");
//     await queryInterface.bulkInsert("users", [
//       {
//         username: "admin",
//         password: initPassword(options.encodeKey, options.encodeIv),
//       },
//     ]);
//     logger("默认用户创建成功");
//     await queryInterface.createTable("blogs", {
//       id: { type: INTEGER, primaryKey: true, autoIncrement: true },
//       user_id: STRING(256), // 用户ID
//       name: STRING(100),
//       content: TEXT,
//       hash: STRING(256),
//       view_count: { type: INTEGER, defaultValue: 0 },
//       folder_id: STRING,
//       status: { type: INTEGER, defaultValue: 0 }, // 0 默认值 ,1 可展示，2 被删除
//       created_at: { type: DATE, defaultValue: Sequelize.NOW },
//       updated_at: { type: DATE, defaultValue: Sequelize.NOW },
//     });
//     logger("blogs表创建成功");
//     await queryInterface.createTable("dict_labels", {
//       id: { type: INTEGER, primaryKey: true, autoIncrement: true },
//       name: STRING(20),
//       status: { type: STRING(10), defaultValue: 1 }, // 0 默认值不显示， 1正常显示，2 已删除
//       created_at: { type: DATE, defaultValue: Sequelize.NOW },
//       updated_at: { type: DATE, defaultValue: Sequelize.NOW },
//     });
//     logger("dict_labels表创建成功");
//     await queryInterface.bulkInsert("dict_labels", [
//       {
//         name: "html",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },
//       {
//         name: "css",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },
//       {
//         name: "javascript",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },

//       {
//         name: "php",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },
//       {
//         name: "java",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },
//       {
//         name: "python",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },
//     ]);
//     await queryInterface.createTable("concat_blog_labels", {
//       id: { type: INTEGER, primaryKey: true, autoIncrement: true },
//       blog_id: STRING(32),
//       label_id: STRING(32),
//       created_at: { type: DATE, defaultValue: Sequelize.NOW },
//       updated_at: { type: DATE, defaultValue: Sequelize.NOW },
//     });
//     logger("concat_blog_labels表创建成功");
//     await queryInterface.createTable("folders", {
//       id: { type: INTEGER, primaryKey: true, autoIncrement: true },
//       name: STRING(20),
//       status: { type: STRING(10), defaultValue: 1 }, // 0 默认值不显示， 1正常显示，2 已删除
//       created_at: { type: DATE, defaultValue: Sequelize.NOW },
//       updated_at: { type: DATE, defaultValue: Sequelize.NOW },
//     });
//     logger("folders表创建成功");
//     await queryInterface.bulkInsert("folders", [
//       {
//         name: "日常经验",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },
//       {
//         name: "Bug记录",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },
//       {
//         name: "学习笔记",
//         status: 1,
//         created_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//         updated_at: moment().format("YYYY-MM-DD HH:mm:ss.SSS"),
//       },
//     ]);
//     await queryInterface.createTable("pictures", {
//       id: { type: INTEGER, primaryKey: true, autoIncrement: true },
//       blog_id: STRING(32),
//       blog_hash: STRING(32),
//       path: STRING(100),
//       created_at: { type: DATE, defaultValue: Sequelize.NOW },
//       updated_at: { type: DATE, defaultValue: Sequelize.NOW },
//     });
//     logger("pictures表创建成功");
//     logger(
//       `
//         数据库初始化完成,为保证账号安全，请登录后立即重置密码
//         初始登录用户名：admin
//         初始登录密码：  123456
//   `
//     );
//   } catch (error) {
//     console.error("Unable to connect to the database:", error);
//     logger(`数据库连接失败,${error}`);
//   }
//   process.exit();
// }
